package com.java.escape.computeAndListOrInterface;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

/**
 * @ClassName LombokError
 * @Description lombok 的常见使用问题
 * @Author wyp
 * @Date 2023/8/24 15:22
 * @Version 1.0
 */
public class LombokError {
    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    private static class Bot {
        private String name;
        private String age;
    }

    public static void main(String[] args) {
        //1.当自定义类继承Object时，使用lombok重写的equals方法且使用@EqualsAndHashcode(true)
        // ，即使两个对象的属性一样，结果也为false,因为调用自Object的equals方法只有自相等才为true
        //! 编译器已优化 直接继承Object的类，使用@EqualsAndHashcode(true)编译器会标红
        // Generating equals/hashCode with a supercall to java.lang.Object is pointless.

        //2.当自定义类继承其他类时，如果不加@EqualsAndHashcode(true)会导致equals方法不会比较父类属性

        //3.lombok和jackson联用时，使用单字母开头的驼峰命名（不符合Java规范 须避免）的属性会出现序列化问题
        // （Java对象和Json字符串）
        Bot user = new Bot("wyp", "18");
        Bot user1 = new Bot("wyp", "18");
        System.out.println(user.equals(user1));
    }
}
